﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Entities;
using Entities.Modelo;

namespace DataAccessLayer
{
    public class RepositorioLogin : ObjectEntity, ICadastro<Login>
    {
        public RepositorioLogin()
            : base()
        {

        }
        public void InserirCadastro(Login objeto)
        {
            tbLogin tbLogin = ComporObjetoLoginEntity(objeto);
            dataContext.AddTotbLogin(tbLogin);
            dataContext.SaveChanges();
        }

        public void AlterarCadastro(Login objeto)
        {
            tbLogin tbLoginEditado = ComporObjetoLoginEntity(objeto);
            tbLogin tbLoginAtual = dataContext.tbLogin.Where(x => x.ID == objeto.ID).FirstOrDefault();
            dataContext.ApplyCurrentValues(tbLoginAtual.EntityKey.EntitySetName, tbLoginEditado);
            dataContext.SaveChanges();
        }

        public void ExcluirCadastro(Login objeto)
        {
            tbLogin tbLoginEditado = ComporObjetoLoginEntity(objeto);
            tbLoginEditado.Ativo = false;
            tbLogin tbLoginAtual = dataContext.tbLogin.Where(x => x.ID == objeto.ID).FirstOrDefault();
            dataContext.ApplyCurrentValues(tbLoginAtual.EntityKey.EntitySetName, tbLoginEditado);
            dataContext.SaveChanges();
        }

        public Login RetornarCadastro(int chave)
        {
            return (from l in dataContext.tbLogin
                    select new Login
                    {
                        Ativo = l.Ativo,
                        ID = l.ID,
                        NomeUsuario = l.NomeUsuario,
                        Senha = l.Senha
                    }).Where(local => local.Ativo == true).FirstOrDefault();
        }

        public IList<Login> RetornarDados()
        {
            return (from l in dataContext.tbLogin
                    select new Login
                    {
                        Ativo = l.Ativo,
                        ID = l.ID,
                        NomeUsuario = l.NomeUsuario,
                        Senha = l.Senha
                    }).Where(local => local.Ativo == true).ToList();
        }

        private tbLogin ComporObjetoLoginEntity(Login objeto)
        {
            tbLogin tbLoginEditado = new tbLogin();
            tbLoginEditado.ID = objeto.ID;
            tbLoginEditado.NomeUsuario = objeto.NomeUsuario;
            tbLoginEditado.Senha = objeto.Senha;
            tbLoginEditado.Ativo = objeto.Ativo;

            return tbLoginEditado;
        }
    }
}
